package leetcode.interviewClassics;

/**
 * @author Cheng Jun
 * Description: 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
 * <p>
 * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。例如，121 是回文，而 123 不是。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/palindrome-number
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @version 1.0
 * @date 2022/2/14 16:28
 */
public class isPalindrome1 {

    // 负数，并且除了0以外的 以0结尾的数字 直接返回false
    // 正数 取右半数 和 左半数 比较是否相等
    public boolean isPalindrome(int x) {
        if (x < 0 || (x != 0 && x % 10 == 0)) {
            return false;
        }
        int rightNum = 0;
        // 不断去掉 x 的右半段，不断增加 rightNum
        while (x > rightNum) {
            rightNum = rightNum * 10 + x % 10;
            x /= 10;
        }
        // 如果x 的位数是偶数 判断 x == rightNum， 1221
        // 如果x 的位数是奇数 判断 x == rightNum / 10，不用关系中间位置的数字 12321
        return x == rightNum || x == rightNum / 10;
    }
}
